June 15, 2004

rant.net

In the beginning .NET was said to be many things such as:


  1. A new language and a language agnostic, cross platform set of libraries.

  2. A set of webservices (Hailstorm, Passport etc.) that would allow easy creation of web applications.

  3. A marketing initiative branding everything .NET

  4. new .NET enabled non-PC devices from cell phones to game boxes.

  5. A set of enterprise servers to run everything on.


Of these only the language and servers remain. The .NET compact framework has basically no market, the marketing hype diserpated when they found that nobody understood what .NET was because it seemed like .NET was everything and nothing, and nobody wanted to buy Microsofts webservices (partly because loss of service in Passport in the early years scared people, as it should when getting customers to log in to your site is a core part of your business).


The runtime has been ported to other platforms by the Open Source movement as part of two projects Mono and dotGNU. However there is vigerous debate over whether they should have done these projects considering the patents that Microsoft holds over .NET, including the core system of the CLR and core libraries. This core has been submitted to the ECMA as a standard. But the standard only covers the core, not Windows.forms, ADO.NET, ASP.NET or any of the new longhorn technologies. dotGNU has tried to get around this by doing all of the development in countries that do not recognise software patents and producing a clean room clone of the non standardised parts. Mono has no answer to the patents other than a casual line in an email that they won't get asked to take a license. With the non-standardised parts it cloned them, and created a second set of technologies that deliver the same functionality as well. Both stratergies are problematic if the goal is to produce a Free Software implementation of .NET. Should the Free Software movement worry about this? Microsoft did say that it wanted .NET cross platform and created Rotor (an implementation of the ECMA parts of .NET that runs on FreeBSD) to prove it. Well consider their history, they have already been proven to be willing to do anything to crush their competitors, they have already funded SCO's groundless attacks on Linux as containing SCO owned code, they have already shown that they don't care if the tactics they use are legal or not, and they have already been shown to see Linux and the Free Software movement as their number one competitor. Yes there is good reason to be afraid.


.NET was supposed to allow any language to be used, without modification. However O'Reilly says:
"Frankly having worked for ten years as a C++ programer and written a dozen books on the subject I'd rather have my teeth drilled than work with managed C++."
the point of .NET and the CLR was that you could programme in any language without there being any noticable changes to programming style, apparently this is not the case, and:
"It is likely that many VB programmers will choose to learn C#, rather than upgrading their skills to VB.NET. This would not surprise because the transition from VB6 to VB.NET is, arguably, nearly as difficult as from VB6 to C# - and,whether it's fair or not historically, C family programmers have had higher earning potential than VB programmers.""
So if Microsoft could not get the language that they created to work properly in .NET, the platform that they created, what does that say about it's real language agnostism.


.NET was also supposed to be the cure of Microsoft's poor security record as the cornerstone of the new way of doing things that is Trusted Computing. However it should be remembered that Trustworthy Computing started after .NET, .NET cannot therefore be seen as part of Trustworthy Computing even if they will have done everything they can within what already existed in .NET to make it trustworthy. However by allowing access to pointers and the ability to manipulate raw memory addresses as well as mixing .NET and old style code will mean that the system will not be as secure as it could be as it can only ever be as secure as it's least secure part. The least secure part in this case being the old and unmanaged code, which windows has already shown to be very unsecure.